import * as api from '../../api/common';

Page({
  data: {
    isEdit: false, // 是否为编辑状态
    formData: {
      id: null,
      name: '',
      phone: '',
      idcard: '',
      gender: '1' // 默认性别为男性
    }
  },

  onLoad: async function(options) {
    if (options.edit && options.id) {
      // 编辑模式，获取观演人详情
      this.setData({ isEdit: true });
      const id = options.id;
      try {
        const res = await api.spectatorInfo({ id });
        if (res.data) {
          this.setData({
            formData: {
              ...res.data,
              gender: res.data.gender + ''
            }
          });
        } else {
          console.error('获取观演人详情失败', res);
        }
      } catch (error) {
        console.error('请求失败', error);
      }
    } else {
      // 新增模式
      this.setData({
        isEdit: false,
        formData: {
          name: '',
          phone: '',
          idCard: '',
          gender: '1'
        }
      });
    }
  },  

  // 切换性别
  changeGender(e) {
    const value = e.currentTarget.dataset.value;
    if (value !== this.data.formData.gender) {
      this.setData({
        'formData.gender': value
      });
    }
  },

  // 处理输入框内容变化
  handleInputChange(e) {
    const value = e.detail.value;
    const field = e.currentTarget.dataset.field;
    this.setData({
      [`formData.${field}`]: value
    });
  },

  // 提交表单
  async submitForm() {
    const { name, phone, idcard, gender, id } = this.data.formData;

    // 数据验证
    if (!name.trim()) {
      tt.showToast({
        title: '请输入姓名',
        icon: 'none'
      });
      return;
    }

    if (!phone.trim() || !/^\d{11}$/.test(phone.trim())) {
      tt.showToast({
        title: '请输入正确的联系方式',
        icon: 'none'
      });
      return;
    }

    if (!idcard.trim() || !/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(idcard.trim())) {
      tt.showToast({
        title: '请输入正确的身份证号',
        icon: 'none'
      });
      return;
    }

    try {
      const userId = tt.getStorageSync('info').id;
      if (this.data.isEdit) {
        // 编辑操作
        await api.updateSpectator({
          id,
          userId,
          name,
          gender,
          idcard,
          phone
        });
        if (code) {
          tt.showToast({
            title: '编辑成功',
            icon: 'success'
          });
          // 成功后跳转回列表页
          tt.navigateBack();
        } else {
          tt.showToast({
            title: data,
            icon: 'fail'
          });
        } 
      } else {
        // 添加操作
        const {data, msg, code} = await api.createSpectator({
          userId,
          name,
          gender,
          idcard,
          phone
        });
        if (code) {
          tt.showToast({
            title: '添加成功',
            icon: 'success'
          });
          // 成功后跳转回列表页
          tt.navigateBack();
        } else {
          tt.showToast({
            title: data,
            icon: 'fail'
          });
        } 
      }
    
    } catch (error) {
      tt.showToast({
        title: '操作失败',
        icon: 'none'
      });
      console.error('操作失败', error);
    }
  }
});
